/**
 * 保存文件
 * @returns {string} savePath
 */
export function saveFile(fileName, content) {
	return new Promise((resolve, reject) => {
		// plus.io.requestFileSystem是请求本地文件系统对象
		plus.io.requestFileSystem(
			// 文件系统中的根目录下的DOWNLOADS目录
			plus.io.PUBLIC_DOWNLOADS,
			fs => {
				// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象 
				fs.root.getFile(fileName, {
					// 文件不存在则创建
					create: true
				}, fileEntry => {
					// 文件在手机中的路径
					fileEntry.createWriter(writer => {
						// 写入文件成功完成的回调函数
						writer.onwrite = e => {
							resolve(fileEntry.fullPath)
						};
						// 写入数据
						writer.write(content);
					})
				}, e => {
					console.log("getFile failed: " + e.message);
					reject('导出失败')
				});
			},
			e => {
				console.log(e.message);
				reject('导出失败')
			}
		)
	})
}

/**
 * 获取备份文件列表
 */
export function getBackupList(folderPath) {
	let list = []
	return new Promise((resolve, reject) => {
		plus.io.resolveLocalFileSystemURL(
			folderPath, (entry) => {
				let directoryReader = entry.createReader(); //获取读取目录对象
				directoryReader.readEntries(
					(entries) => {
						// 返回的是指定文件夹下的文件列表
						entries.forEach(i => {
							if (i.name.endsWith('.txt')) {
								list.push(i.name)
							}
						})
						resolve(list)
					}, (err) => {
						console.error("访问目录失败", JSON.stringify(err));
						reject('无数据')
					});
			},
			(error) => {
				console.error('解析路径失败：', JSON.stringify(error));
				reject('无数据')
			});
	})
}

/**
 * 读取文件
 * @returns {string} content
 */
export function readFile(filePath) {
	return new Promise((resolve, reject) => {
		plus.io.resolveLocalFileSystemURL(
			filePath, (entry) => {
				// entry 表示文件系统中的文件或目录
				entry.file((file) => {
					// file 是 File 对象，可以获取文件的详细信息
					const reader = new plus.io.FileReader();
					reader.onloadend = function(e) {
						resolve(e.target.result)
					};
					reader.onerror = function(e) {
						console.error('读取失败：', e.target.error);
						reject('读取失败')
					};
					reader.readAsText(file);
				}, (error) => {
					console.error('获取文件对象失败：', JSON.stringify(error));
					reject('获取文件失败')
				});
			}, (error) => {
				console.error('解析路径失败：', JSON.stringify(error));
				reject('解析路径失败')
			});
	})
}

/**
 * 删除文件
 * @returns {string} content
 */
export function deleteFile(filePath) {
	return new Promise((resolve, reject) => {
		plus.io.resolveLocalFileSystemURL(
			filePath, (entry) => {
				// entry 表示文件系统中的文件或目录
				entry.remove(function() {
					resolve("删除成功")
				}, function(e) {
					console.log('删除失败', JSON.stringify(e));
					reject('删除失败')
				});
			}, (error) => {
				console.error('解析路径失败：', JSON.stringify(error));
				reject('解析路径失败')
			});
	})
}